/*
Promise.race() 方法同样是将多个 Promise 实例， 包装成一个新的 Promise 实例。
上面代码中， 只要p1、 p2、 p3之中有一个实例率先改变状态， p的状态就跟着改变。 那个率先改变的 Promise 实例的返回值， 就传递给p的回调函数。
Promise.race()方法的参数与Promise.all()方法一样，如果不是 Promise 实例，
就会先调用下面讲到的Promise.resolve()方法，将参数转为 Promise 实例，再进一步处理。
*/
const p = Promise.race([p1, p2, p3]);



//下面是一个例子， 如果指定时间内没有获得结果， 就将 Promise 的状态变为reject， 否则变为resolve。异步优化的新思路
const p = Promise.race([
	fetch('/resource-that-may-take-a-while'),
	new Promise(function(resolve, reject) {
		setTimeout(() => reject(new Error('request timeout')), 5000)
	})
]);
p.then(console.log).catch(console.error);
